// MathJax 对话框

CKEDITOR.dialog.add('mathjaxDialog', function(editor) {
    return {
        title: '插入数学公式',
        minWidth: 450,
        minHeight: 250,
        contents: [
            {
                id: 'tab-basic',
                label: '基本设置',
                elements: [
                    {
                        type: 'textarea',
                        id: 'latex',
                        label: 'LaTeX 代码',
                        validate: CKEDITOR.dialog.validate.notEmpty('LaTeX 代码不能为空'),
                        setup: function(element) {
                            this.setValue(element.getText());
                        },
                        commit: function(element) {
                            element.setText(this.getValue());
                        },
                        rows: 6,
                        style: 'width:100%;'
                    },
                    {
                        type: 'html',
                        html: '<div style="padding:10px 0;">支持标准 LaTeX 语法，例如：$E=mc^2$ 或 $$\int_{a}^{b} f(x) dx$$</div>'
                    },
                    {
                        type: 'radio',
                        id: 'formulaType',
                        label: '公式类型',
                        items: [
                            ['行内公式', 'inline'],
                            ['块级公式', 'block']
                        ],
                        'default': 'inline'
                    }
                ]
            }
        ],
        onOk: function() {
            var dialog = this;
            var latex = dialog.getValueOf('tab-basic', 'latex');
            var formulaType = dialog.getValueOf('tab-basic', 'formulaType');
            
            // 根据公式类型添加适当的分隔符
            if (formulaType === 'inline') {
                latex = '$' + latex + '$';
            } else {
                latex = '$$' + latex + '$$';
            }
            
            // 创建元素并设置内容
            var element = editor.document.createElement('span');
            element.setAttribute('class', 'mathjax-formula');
            element.setText(latex);
            
            // 插入到编辑器
            editor.insertElement(element);
            
            // 触发 MathJax 渲染
            if (window.MathJax && window.MathJax.typeset) {
                try {
                    // 只排版新插入的元素
                    MathJax.typeset([element.$]);
                    console.log('MathJax formula rendered successfully');
                } catch (e) {
                    console.error('MathJax rendering failed:', e);
                    alert('公式渲染失败: ' + e.message);
                }
            } else {
                console.error('MathJax is not available');
                alert('MathJax 未加载，请刷新页面重试');
            }
        }
    };
});